#include <stdio.h>
void main(void)
{
    // 相当于TS的type alias
    // typedef命令用来为某个类型起别名。
    typedef int *intptr;
    int a = 10;
    intptr x = &a;
    // typedef为类型起别名的好处，主要有下面几点。
    // 1、更好的代码可读性
    // 2、为 struct、union、enum 等命令定义的复杂数据结构创建别名，从而便于引用
    // 3、typedef 方便以后为变量改类型
    // 4、简化类型声明
    char (*(*x(void))[5])(void);
    // 等价于
    typedef char (*Func)(void);
    Func(*x(void))[5];
    // 可以改写为
    // typedef char (*Func)(void);
    // typedef Func Arr[5];
    // Arr* x(void);
    // 上面代码就比较容易解读了。

    // x是一个函数，返回一个指向 Arr 类型的指针。
    // Arr是一个数组，有5个成员，每个成员是Func类型。
    // Func是一个函数指针，指向一个无参数、返回字符值的函数。
}